<script>
	import {
		updatePointAssistant
	} from "@/http/api/tutor/tutor.js"
	import Cache from '@/utils/cache'
	export default {
		onLaunch: function() {
			// #ifdef MP-WEIXIN
			uni.authorize({
				scope: 'scope.userLocation',
				success: () => {
					// 小程序启动时初始化轮询
					this.startGlobalPolling();
				},
				fail: () => console.log('未授权')
			});
			// #endif

			// #ifdef APP-PLUS
			// APP端需要先检查权限
			this.checkAppLocationPermission();
			// #endif

			// #ifdef APP-PLUS
			// 获取CID
			plus.push.getClientInfoAsync((info) => {
				let cid = info["clientid"];
				console.log(cid)
			});
			// #endif

			// console.log('App Launch')
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide() {
			// 进入后台时停止轮询（根据需求决定是否保留）
			// this.stopGlobalPolling();
		},
		methods: {
			startGlobalPolling() {
				this.globalTimer = null;
				// 立即执行一次
				this.getGlobalLocation();
				// 启动30秒轮询
				this.globalTimer = setInterval(() => {
					this.getGlobalLocation();
				}, 30000);
			},
			stopGlobalPolling() {
				if (this.globalTimer) {
					clearInterval(this.globalTimer);
					this.globalTimer = null;
				}
			},
			// 检查APP位置权限
			checkAppLocationPermission() {
				// #ifdef APP-PLUS
				const self = this;
				// 获取当前系统信息
				const systemInfo = uni.getSystemInfoSync();
				// 判断是否是安卓系统
				const isAndroid = systemInfo.platform.toLowerCase() === 'android';

				if (isAndroid) {
					// 安卓平台需要动态申请权限
					const permissions = [
						'android.permission.ACCESS_FINE_LOCATION',
						'android.permission.ACCESS_COARSE_LOCATION'
					];

					plus.android.requestPermissions(
						permissions,
						function(resultObj) {
							// 检查是否有已授权的权限
							let hasLocationPermission = false;
							for (let i = 0; i < resultObj.granted.length; i++) {
								const grantedPermission = resultObj.granted[i];
								if (permissions.includes(grantedPermission)) {
									hasLocationPermission = true;
									break;
								}
							}

							if (hasLocationPermission) {
								// 有位置权限，启动轮询
								self.startGlobalPolling();
							} else {
								// 没有位置权限，提示用户
								uni.showModal({
									title: '提示',
									content: '需要位置权限才能正常使用应用，请在设置中开启',
									confirmText: '去设置',
									success: function(res) {
										if (res.confirm) {
											// 打开应用设置页面
											self.openAppPermissionSettings();
										}
									}
								});
							}
						},
						function(error) {
							console.error('权限请求失败:', error);
						}
					);
				} else {
					// iOS平台直接请求位置权限
					self.startGlobalPolling();
				}
				// #endif

				// 非APP平台
				// #ifndef APP-PLUS
				this.startGlobalPolling();
				// #endif
			},

			// 打开应用权限设置页面
			openAppPermissionSettings() {
				// #ifdef APP-PLUS
				if (uni.getSystemInfoSync().platform.toLowerCase() === 'android') {
					// 安卓平台
					const Intent = plus.android.importClass("android.content.Intent");
					const Settings = plus.android.importClass("android.provider.Settings");
					const Uri = plus.android.importClass("android.net.Uri");
					const mainActivity = plus.android.runtimeMainActivity();
					const intent = new Intent();
					intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
					const uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
					intent.setData(uri);
					mainActivity.startActivity(intent);
				} else {
					// iOS平台
					const UIApplication = plus.ios.import("UIApplication");
					const application = UIApplication.sharedApplication();
					const NSURL = plus.ios.import("NSURL");
					const setting = NSURL.URLWithString("app-settings:");
					application.openURL(setting);
					plus.ios.deleteObject(setting);
					plus.ios.deleteObject(NSURL);
					plus.ios.deleteObject(application);
				}
				// #endif
			},

			getGlobalLocation() {
				uni.getLocation({
					type: 'gcj02',
					success: (res) => {
						// 全局存储位置数据
						this.globalData.latitude = res.latitude;
						this.globalData.longitude = res.longitude;
						// 更新位置到服务器
						updatePointAssistant({
							point: {
								lng: res.longitude,
								lat: res.latitude
							}
						})
						console.log('位置更新成功', res);
					},
					fail: (err) => {
						console.error('全局定位失败:', err);
						// #ifdef APP-PLUS
						// APP端定位失败，可能是权限问题，重新检查权限
						if (uni.getSystemInfoSync().platform.toLowerCase() === 'android') {

							this.checkAppLocationPermission();
						}
						// #endif
					}
				});
			}
		},
		globalData: {
			ossurl: 'https://oss.lailalaila.cn/',
			// ossurl: 'https://oss.starbounce.cn/',
			globalTimer: null, // 全局定时器
			latitude: '',
			longitude: '',
		}
	}
</script>

<style>
	@import './common/app.css';
	@import './static/style/thorui-extend.css';
	@import '@/style/free.css';
	@import '@/style/color.css';
	@import '@/style/size.css';
	@import '@/style/common.scss';
</style>